home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / ARMLINUX / MAIL / 9804 / 000088_owner-linux-arm…r.rutgers.edu _Mon Apr 20 11:54:30 1998.msg < prev    next >
Internet Message Format  |  1998-05-13  |  3KB

  1. Return-Path: <owner-linux-arm-outgoing@vger.rutgers.edu>
  2. Received: from orava.funet.fi (orava.funet.fi [128.214.248.46])
  3.     by odie.barnet.ac.uk (8.8.6/8.8.6) with ESMTP id LAA15427
  4.     for <willy@odie.fluff.org>; Mon, 20 Apr 1998 11:54:29 +0100
  5. Received: from vger.rutgers.edu ([128.6.190.2]:12035 "EHLO vger.rutgers.edu" ident: "TIMEDOUT") by orava.funet.fi with ESMTP id <391222-29392>; Mon, 20 Apr 1998 13:54:09 +0300
  6. Received: by vger.rutgers.edu id <971169-319>; Mon, 20 Apr 1998 06:49:39 -0400
  7. Received: from odie.barnet.ac.uk ([194.82.202.98]:12572 "EHLO odie.barnet.ac.uk" ident: "TIMEDOUT") by vger.rutgers.edu with ESMTP id <971178-319>; Mon, 20 Apr 1998 06:49:22 -0400
  8. Received: (from willy@localhost)
  9.     by odie.barnet.ac.uk (8.8.6/8.8.6) id LAA15415;
  10.     Mon, 20 Apr 1998 11:53:02 +0100
  11. From: Matthew Wilcox <willy@odie.barnet.ac.uk>
  12. Message-Id: <199804201053.LAA15415@odie.barnet.ac.uk>
  13. Subject: strchr.S
  14. To: linux-arm@vger.rutgers.edu
  15. Date:     Mon, 20 Apr 1998 11:52:59 +0100 (BST)
  16. Cc: mdw@ebi.ac.uk
  17. X-Mailer: ELM [version 2.4 PL25]
  18. MIME-Version: 1.0
  19. Content-Type: text/plain; charset=US-ASCII
  20. Content-Transfer-Encoding: 7bit
  21. X-Orcpt: rfc822;linux-arm@vger.rutgers.edu
  22. Sender: owner-linux-arm@vger.rutgers.edu
  23. Precedence: bulk
  24. X-Loop: majordomo@vger.rutgers.edu
  25. Status: RO
  26.  
  27.  
  28. Here's a 39-instruction of strchr which works word-at-a-time.  I have
  29. neither tested nor benchmarked it.  Phil, does glibc have a testsuite
  30. for strchr?  If not, I ought to write one - there are so many cases to
  31. take care of.
  32.  
  33. -- 
  34. Set Alias$Case Set Alias$[ |||| |MSet Alias$Otherwise Set Alias$[ \ Matthew
  35. "" |MSet Alias$When If %0=%%0 Then Set Alias$[ "" ||MIf %0=%%0    \ Wilcox
  36. Then Set Alias$Otherwise Set Alias$[ |||||||||||||||| ||MIf       \
  37. %0=%%0 Then Set Alias$When Set Alias$[ ||||||||||||||||
  38.  
  39. strchr:
  40.    tst    r0, #3
  41.    beq    2f
  42. 1: ldrb   r2, [r0], #1
  43.    cmp    r2, r1
  44.    tstne  r0, #3
  45.    bne    1b
  46.    subcs  r0, r0, #1
  47.    movcs  pc, r14
  48. 2: orr    r1, r1, r1, LSL #8
  49.    orr    r1, r1, r1, LSL #16
  50. 3: ldr    r2, [r0], #4
  51.    eor    r3, r2, r1
  52.    tst    r3, #&000000ff
  53.    tstne  r3, #&0000ff00
  54.    tstne  r3, #&00ff0000
  55.    tstne  r3, #&ff000000
  56.    beq    5f
  57.    tst    r2, #&000000ff
  58.    tstne  r2, #&0000ff00
  59.    tstne  r2, #&00ff0000
  60.    tstne  r2, #&ff000000
  61.    bne    3b
  62. 4: mov    r0, #0
  63.    mov    pc, r14
  64. 5: tst    r2, #&000000ff
  65.    beq    4b
  66.    tst    r3, #&000000ff
  67.    subeq  r0, r0, #1
  68.    tstne  r3, #&0000ff00
  69.    subeq  r0, r0, #2
  70.    moveq  pc, r14
  71.    tst    r2, #&0000ff00
  72.    tstne  r2, #&00ff0000
  73.    beq    4b
  74.    tst    r3, #&00ff0000
  75.    subeq  r0, r0, #1
  76.    tstne  r3, #&ff000000
  77.    moveq  pc, r14
  78.    b      4b
  79.  
  80. unsubscribe: body of `unsubscribe linux-arm' to majordomo@vger.rutgers.edu